#ifndef __LDX_CPROGRAMVPS_H_INCLUDE__
#define __LDX_CPROGRAMVPS_H_INCLUDE__
#include "LDXConfig.h"
#include "IProgram.h"
#include "SDeviceMap.h"

namespace ldx
{
	namespace render
	{
		class CProgramVPS:public IProgram
		{
		public:
			CProgramVPS(SDeviceMap dm);

			virtual ~CProgramVPS();

			virtual void set(SShaderMid mid);

			virtual void use();

			virtual void stopUsing();

			virtual void setConstantBuffers(E_SHADER_TYPE type,
				uint startSlot, uint numBuffer,
				CBufferObject& bufferObjet);

			void setVertexConstantBuffers(uint startSlot, uint numBuffer,
				CBufferObject& bufferObjet);

			void setPixelConstantBuffers(uint startSlot, uint numBuffer,
				CBufferObject& bufferObjet);

			bool operator<(CProgramVPS& other)
			{
				return ID < other.ID;
			}

		private:
			SDeviceMap DM;
			ID3D11InputLayout* InputLayout;
			ID3D11VertexShader* VertexShader = nullptr;
			ID3D11PixelShader* PixelShader = nullptr;
			uint ID = 0;
		};
	}
}

#endif//! __LDX_CPROGRAMVPS_H_INCLUDE__